proof as programs